www.gusucode.com > 动网论坛Dvbbs v8.3 > 动网论坛Dvbbs v8.3\code\源程序\admin\Label.asp
<!--#include file="../conn.asp"--> <!--#include file="inc/const.asp"--> <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312" /> <script src="../inc/main82.js" type="text/javascript"></script> <script src="inc/admin.js" type="text/javascript"></script> <script language="javascript" src="../dv_edit/main.js"></script> <link href="skins/css/main.css" rel="stylesheet" type="text/css" /> <TITLE>Label</TITLE> <style type="text/css"> body { margin:0px; background:#fff; margin:0px; padding:10px; font:normal 12px 宋体; SCROLLBAR-FACE-COLOR: #C9DEFA; SCROLLBAR-HIGHLIGHT-COLOR: #C9DEFA; SCROLLBAR-SHADOW-COLOR: #337ABB; SCROLLBAR-DARKSHADOW-COLOR: #C9DEFA; SCROLLBAR-3DLIGHT-COLOR: #C9DEFA; SCROLLBAR-ARROW-COLOR: #264580; SCROLLBAR-TRACK-COLOR: #EEF7FD; } a { color: #135294; text-decoration: none; } a:hover { color: #ff6600; text-decoration: underline; } td { height:24px; line-height:20px; background:#fff; font-size:12px; border:1px solid #fff; color:#444; padding:2px; } table { background:#C4D8ED; } .td_title { height:24px; line-height:24px; background:#EEF7FD; color:#135294; font-weight:bold; border:1px solid #fff; padding-left:20px; } input { border:1px solid #999;font-family:verdana; } select { font-family:verdana; } .button { color: #135294; border:1px solid #666; height:21px; line-height:21px; background:url("images/button_bg.gif")} .radio { border:none; } .checkbox { border:none; } a.folder{ float:left; color:#135294; width:100px;height:100px;border:1px #C4D8ED solid; padding:5px;margin:5px; text-align:center;padding-top:30px; font-size:14px;font-family:verdana; cursor:pointer; text-decoration: none; overflow:hidden; background-image:url(skins/images/label_folder.gif); background-repeat:no-repeat; background-position:center; } a:hover.folder{ border:2px #135294 solid; text-decoration: none; background-position:center; } a.folder em { display:none; } a:hover.folder em { font-style:normal;font-size:12px; color:#666666; font-family:verdana; font-weight:lighter; display:inline; } a.file{ float:left; color:#135294; width:100px;height:100px;border:1px #C4D8ED solid; padding:5px;margin:5px; text-align:center;padding-top:30px; font-size:14px;font-family:verdana;font-weight:bold; cursor:pointer; text-decoration: none; overflow:hidden; background-image:url(skins/images/label_file.gif); background-repeat:no-repeat; } a:hover.file{ border:2px #135294 solid; text-decoration: none; } a.file em { display:none; } a:hover.file em { font-style:normal;font-size:12px; color:#666666; font-family:verdana; font-weight:lighter; display:inline; } </style> <% Dim admin_flag admin_flag=",23," CheckAdmin(admin_flag) %> <body onload="$('format_time').innerHTML=Label_FormatTime($('label_intv').value)"> <% Dvbbs.ScriptPath="../Resource/Label" Dim G_CurrentFolder, G_ParentFolder, G_Msg, G_i, G_Do, G_Config G_Do = request("do") G_CurrentFolder = request("folder") G_CurrentFolder = Replace(G_CurrentFolder, ".", "") If ""=G_CurrentFolder Or "/"=G_CurrentFolder Then G_CurrentFolder = "/" Else G_ParentFolder = InstrRev(G_CurrentFolder,"/",Len(G_CurrentFolder)-1) If G_ParentFolder>0 Then G_ParentFolder = Left(G_CurrentFolder, G_ParentFolder) Else G_ParentFolder = "" End If End If Select Case G_Do Case "save_label" SaveLabel Case "del_label" DelLabel End Select Function CreateFSO() On Error Resume Next Set CreateFSO = Dvbbs.iCreateObject("Scripting.FileSystemObject") If Err Then Err.Clear response.write "您的空间不支持FSO,或者FSO对象名由于安全原因被更改过,请与空间商联系!<a href='javascript:history.go(-1)'>[返回上一次操作的页面]</a>" response.End End If End Function Sub ListLabelFolder(sLabelPath) Dim Fso, Folder, File, SubFolder, sTemp, sRealPath On Error Resume Next Set Fso = CreateFSO() sRealPath = Server.MapPath(Dvbbs.ScriptPath & sLabelPath) Set Folder = Fso.GetFolder(sRealPath) If Err Then Err.Clear response.write "传递过来的标签目录有误,或者您的空间不支持获取目录操作,请与空间商联系!<a href='javascript:history.go(-1)'>[返回上一次操作的页面]</a>" response.End End If If "/"<>sLabelPath Then If ""<>G_ParentFolder And "/"<>G_ParentFolder Then response.write "<a href='?folder=' class=folder title='返回根目录'>/<br/><em>返回根目录</em></a>" response.write "<a href='?folder=" & G_ParentFolder & "' class=folder title='返回上一级目录'>../<br/><em>返回上一级目录</em></a>" End If G_i = 0 For Each SubFolder In Folder.Subfolders G_i = G_i + 1 response.write "<a href='?folder=" & sLabelPath & SubFolder.name & "/' class=folder title='标签目录:" & SubFolder.name & VBNewline & "点击打开该目录'>" & SubFolder.name & "<br/><em>有" & SubFolder.Subfolders.Count & "个目录</em><br/><em>有" & SubFolder.Files.Count & "个标签</em></a>" Next For Each File In Folder.Files G_i = G_i + 1 response.write "<a href='?do=edit_label&realdo=edit&file=" & File.name & "&folder=" & sLabelPath & "' class=file title='标签名:" & File.name & VBNewline & "点击编辑该标签'>" & File.name & "<br><em>" & File.DateLastModified & "</em></a>" Next Set File = Nothing Set Fso = Nothing If 0=G_i Then response.write "没有找到自定义标签。您可以在下面的表格中添加:" End If End Sub Sub SaveLabel() Select Case request("label_type") Case "static" SaveStaticLabel Case "rss" SaveRssLabel Case "query" SaveQueryLabel End Select End Sub Sub DelLabel() Dim Fso, sLabelPath, sLabelName, sRealPath sLabelPath=request("folder") sLabelName=request("label_name") If IsSafeParam(sLabelPath,"^[a-zA-Z0-9_\/]+$") And IsSafeParam(sLabelName,"^[a-zA-Z0-9_]+$") Then On Error Resume Next sRealPath=Server.MapPath(Dvbbs.ScriptPath&sLabelPath&sLabelName&".tpl") If Err Then G_Msg="<font color=red>传递过来的路径不规范。请到空间上手动删除该文件。</font>" Else Set Fso=CreateFSO() If Fso.FileExists(sRealPath) Then Fso.DeleteFile sRealPath,True If Err Then Err.Clear G_Msg="<font color=red>在删除标签文件时发生错误,可能是没有足够的权限。请到空间上手动删除此标签文件。</font>" Else G_Msg="<font color=green>成功删除标签:"&sLabelName&"</font>" End If Else G_Msg="<font color=red>标签文件没有找到。可能已经被删除,或者没有足够的权限。</font>" End If Set Fso=Nothing End If Else G_Msg="<font color=red>传递过来的路径因为安全原因被禁止。请到空间上手动删除该文件。</font>" End If End Sub Sub SaveStaticLabel() Dim sSave, iIntv iIntv=Dvbbs.CheckNumeric(request("label_intv")) If 0=iIntv Then iIntv=72000 sSave="static|||" & (iIntv & "|||" & request("label_content")) SaveLabelToFile sSave End Sub Sub SaveRssLabel() Dim sSave, iIntv, sXslt, oXml sXslt=request("label_xslt") iIntv=Dvbbs.CheckNumeric(request("label_intv")) If 0=iIntv Then iIntv=7200 sSave="rss|||" & (iIntv & "|||" & request("label_rss") & "|||" & sXslt) Set oXml=Dvbbs.CreateXmlDoc("msxml2.FreeThreadedDOMDocument"&MsxmlVersion) If oXml.loadXml(sXslt) Then SaveLabelToFile sSave Else G_Msg="<font color=red>解释模板内容不规范,请修改后重新提交。</font>" G_Config=Split(sSave,"|||") End If End Sub Sub SaveQueryLabel() Dim sSave, iIntv, sQuery, sQueryType, sConfig, arr, s, sOrderbyID, sPreT, sPreB, d, desc iIntv=Dvbbs.CheckNumeric(request("label_intv")) If 0=iIntv Then iIntv=120 sConfig=request("label_query_config") sQueryType=request("label_query_type") If ""=sQueryType Then sQueryType="bbs" sConfig=Dvbbs.CheckStr(sConfig) arr=Split(sConfig,"$") sQuery="select top "&arr(0)&" " sQueryType=Replace(sQueryType,"|||","") Select Case sQueryType Case "bbs" '0-调用记录条数$1-排序方式$2-正倒序$3-版面列表$4-版面模式$5-贴子类型(0-不限1-固顶主题2-精华主题3-回复贴子)$6-时间限制 sPreT="":sPreB="" If "3"=arr(5) Then sQuery=sQuery&" UserName,Topic,Rootid,Boardid,Dateandtime,Announceid,Body,Expression from "&Dvbbs.NowUseBBS sOrderbyID="announceid" ElseIf "2"=arr(5) Then sQuery=sQuery&" B.PostUserName, B.Title, B.Rootid as topicid, B.Boardid, B.Dateandtime as topictime, B.Announceid as postid, B.Id as bestid, B.Expression From Dv_BestTopic B INNER JOIN Dv_Topic T ON B.RootID = T.TopicID" sOrderbyID="B.id" sPreT="T.":sPreB="B." Else sQuery=sQuery&" PostUserName,Title,Topicid,Boardid,Dateandtime,Topicid as Topicid2,Hits,Expression,LastPost from [dv_topic]" If "1"=arr(5) Then sQuery=sQuery&" where istop>0" sOrderbyID="topicid" End If If InStr(sQuery," where ")>0 Then sQuery=sQuery&" and" Else sQuery=sQuery&" where" End If sQuery=sQuery&(" "&sPreB&"boardid") If ""<>arr(3) Then If InStr(arr(3),",")>0 Then If "1"=arr(4) Then sQuery=sQuery&" not in (444,777," Else sQuery=sQuery&" in (" End If sQuery=sQuery&arr(3) & ")" Else If "1"=arr(4) Then sQuery=sQuery&"<>" Else sQuery=sQuery&"=" End If sQuery=sQuery&arr(3) End If Else sQuery=sQuery&" not in(444,777)" End If If "0"<>arr(6) Then d=0 Select Case arr(6) Case "1" d=7 Case "2" d=30 Case "3" d=3*30 Case "4" d=6*30 Case "5" d=12*30 End Select If d>0 Then If InStr(sQuery," where ")>0 Then sQuery=sQuery&" and" Else sQuery=sQuery&" where" End If If IsSqlDataBase=1 Then sQuery=sQuery&" Datediff(day, "&sPreB&"DateAndTime, " & SqlNowString & ") <= " & d Else sQuery=sQuery&" Datediff('d', "&sPreB&"DateAndTime, " & SqlNowString & ") <= " & d End If End If End If Select Case arr(1) Case "1" sQuery=sQuery&(" order by "&sOrderbyID) Case "2" If "3"<>arr(5) Then sQuery=sQuery&(" order by "&sPreT&"LastPostTime") Case "3" If "3"<>arr(5) Then sQuery=sQuery&(" order by "&sPreT&"hits") Case "4" If "3"<>arr(5) Then sQuery=sQuery&(" order by "&sPreT&"Child") End Select If InStr(sQuery, " order by")>0 Then If "1"=arr(2) Then sQuery=sQuery&" desc" If "1"<>arr(1) Then sQuery=sQuery&","&sOrderbyID&" desc" End If Case "user" sQuery=sQuery&"UserID,UserName,UserTopic,UserPost,UserIsBest,UserWealth,UserCP,UserEP,UserDel,UserSex,JoinDate,UserLogins From [Dv_user]" Select Case arr(1) Case "1" sQuery=sQuery&" order by UserID" Case "2" sQuery=sQuery&" order by UserPost" Case "3" sQuery=sQuery&" order by UserTopic" Case "4" sQuery=sQuery&" order by UserIsBest" Case "5" sQuery=sQuery&" order by UserWealth" Case "6" sQuery=sQuery&" order by UserEP" Case "7" sQuery=sQuery&" order by UserCP" Case "8" sQuery=sQuery&" order by UserDel" Case "9" sQuery=sQuery&" order by UserLogins" End Select If InStr(sQuery, " order by")>0 And "1"=arr(2) Then sQuery=sQuery&" desc" Case "news" sQuery=sQuery&"ID,Boardid,Title,UserName,AddTime FROM [Dv_bbsnews]" If ""<>arr(3) Then If InStr(sQuery," where ")>0 Then sQuery=sQuery&" and" Else sQuery=sQuery&" where" End If sQuery=sQuery&" boardid" If InStr(arr(3),",")>0 Then If "1"=arr(4) Then sQuery=sQuery&" not" sQuery=sQuery&" in (" & arr(3) & ")" Else If "1"=arr(4) Then sQuery=sQuery&"<>" Else sQuery=sQuery&"=" End If sQuery=sQuery&arr(3) End If End If If "1"=arr(1) Then sQuery=sQuery&" order by ID" If "1"=arr(2) Then sQuery=sQuery&" desc" End If Case "file" sQuery=sQuery&" F_ID,F_AnnounceID,F_BoardID,F_Username,F_Filename,F_Readme,F_Type,F_FileType,F_AddTime,F_Viewname,F_ViewNum,F_DownNum,F_FileSize FROM [DV_Upfile] WHERE F_Flag<>4" If ""<>arr(3) Then sQuery=sQuery&" and F_BoardID" If InStr(arr(3),",")>0 Then If "1"=arr(4) Then sQuery=sQuery&" not" sQuery=sQuery&" in (" & arr(3) & ")" Else If "1"=arr(4) Then sQuery=sQuery&"<>" Else sQuery=sQuery&"=" End If sQuery=sQuery&arr(3) End If End If If "all"<>arr(5) Then sQuery=sQuery&(" and F_Type="&Dvbbs.CheckNumeric(arr(5))) End If Select Case arr(1) Case "1" sQuery=sQuery&(" order by F_ID") Case "2" sQuery=sQuery&(" order by F_ViewNum") Case "3" sQuery=sQuery&(" order by F_DownNum") Case "4" sQuery=sQuery&(" order by F_FileSize") End Select If InStr(sQuery, " order by")>0 And "1"=arr(2) Then sQuery=sQuery&" desc" Case "group" sQuery=sQuery&"ID,GroupName,GroupInfo,AppUserID,AppUserName,UserNum,Stats,PostNum,TopicNum,TodayNum,YesterdayNum,LimitUser,PassDate,GroupLogo From [Dv_GroupName] Where Stats>0" Select Case arr(1) Case "1" sQuery=sQuery&(" order by ID") Case "2" sQuery=sQuery&(" order by PassDate") Case "3" sQuery=sQuery&(" order by UserNum") Case "4" sQuery=sQuery&(" order by TopicNum") Case "5" sQuery=sQuery&(" order by PostNum") Case "6" sQuery=sQuery&(" order by LimitUser") End Select If InStr(sQuery, " order by")>0 And "1"=arr(2) Then sQuery=sQuery&" desc" End Select sSave="query|||" & (iIntv & "|||" & sQueryType & "|||" & sQuery & "|||" & request("label_template_start") & "|||" & request("label_template_loop") & "|||" & request("label_template_stop") & "|||" & sConfig & "|||" & request("label_mainshow_length") & "|||" & request("label_time_type")) 'response.write "<pre>"&sSave&"</pre>" SaveLabelToFile sSave End Sub Function FileIsExist(Path) Dim Fso:FileIsExist=False On Error Resume Next Set Fso=CreateFSO() If Fso.FileExists(Server.MapPath(Path)) Then FileIsExist=True Set Fso=Nothing End Function Function FileReName(Path,NewName) Dim Fso,File FileReName=False On Error Resume Next Set Fso=CreateFSO() Set File=Fso.GetFile(Server.MapPath(Path)) File.name=NewName Set File=Nothing Set Fso=Nothing FileReName=True End Function Function IsSafeParam(Path,Param) Dim re IsSafeParam=False Set re=new RegExp re.IgnoreCase =True re.Global=True re.Pattern=Param IsSafeParam=re.Test(Path) Set Re=Nothing End Function Sub SaveLabelToFile(Content) Dim sLabelPath, sLabelName, sLabelOldName, s sLabelPath=request("label_path") sLabelName=request("label_name") sLabelOldName=request("label_oldname") G_Msg="" If IsSafeParam(sLabelPath,"^[a-zA-Z0-9_\/]+$") Then If IsSafeParam(sLabelName,"^[a-zA-Z0-9_]+$") Then If "add"=request("realdo") Then If FileIsExist(Dvbbs.ScriptPath&sLabelPath&sLabelName&".tpl") Then G_Msg="<font color=red>该标签名已存在,请修改标签名后重新提交。</font>" Else If sLabelOldName<>"" And sLabelOldName<>sLabelName Then If FileIsExist(Dvbbs.ScriptPath&sLabelPath&sLabelName&".tpl") Then G_Msg="<font color=red>您试图修改标签名,但是该标签名已存在,请修改后重新提交。</font>" Else If IsSafeParam(sLabelOldName,"^[a-zA-Z0-9_]+$") Then If Not FileReName(Dvbbs.ScriptPath&sLabelPath&sLabelOldName&".tpl", sLabelName&".tpl") Then G_Msg="<font color=red>您试图修改标签名,但是没有成功。可能是权限不够。</font>" End If Else G_Msg="<font color=red>非法参数。请修改后重新提交。</font>" End If End If End If End If If ""=G_Msg Then On Error Resume Next Dvbbs.WriteToFile sLabelPath&sLabelName&".tpl", Content If Err Then Err.Clear G_Msg="<font color=red>标签保存失败。可能您的标签文件夹(Resource/Label)及其子目录没有写入和修改权限。</font>" Else G_Msg="<font color=green>恭喜,标签保存成功!</font>" Application.Lock Application.Contents.Remove(Dvbbs.CacheName&"_label_"&LCase(Mid(sLabelPath,2)&sLabelName)&"_buffer") Application.unLock End If End If Else G_Msg="<font color=red>标签名不规范。标签名只能由字母、数字和下划线组成。请修改后重新提交。</font>" End If Else G_Msg="<font color=red>保存目录名称不规范。目录名称只能由字母、数字和下划线组成。请到空间的相应文件夹中修改目录名。</font>" End If G_Config=Split(Content,"|||") End Sub %> <SCRIPT LANGUAGE="JavaScript"> <!-- function $(i){return document.getElementById(i);} function Label_Chk(o,restr){ var re=new RegExp(restr); if (re.test(o.value)){ $(o.name+"_chk").innerHTML="<font color=green><b>√</b></font>"; return true; }else{ $(o.name+"_chk").innerHTML="<font color=red><b>×</b></font>"; return false; } } function Label_FormatTime(i){ var t=0; if (i<60){t=i+'秒';} else if (i<3600){t=parseInt(i/60)+'分种';} else{t=parseInt(i/3600)+'小时';} return '当前缓存时间约'+t; } function Label_Submit(frm,e){ var s,rtn=false; if (Label_Chk(frm.label_name,/^[a-zA-Z0-9_\/]+$/gi)&&Label_Chk(frm.label_intv,/^[0-9]+$/gi)){rtn=true;} if (rtn){ switch(frm.label_type.value){ case 'static': s=label_content_edit.save(); s=s.replace(/%7B/gi,'{'); s=s.replace(/%7D/gi,'}'); s=s.replace(/http:.+?<%=replace(Dvbbs.CacheData(33,0),"/","\/")%>/gi,''); frm.label_content.value=s break; case 'rss': if (!Label_Chk(frm.label_rss,/^http:\/\//gi)){rtn=false;} break; case 'query': //frm.label_template_start.value=label_edit_template_start.save(); s=label_edit_template_loop.save(); s=s.replace(/%7B/gi,'{'); s=s.replace(/%7D/gi,'}'); s=s.replace(/http:.+?<%=replace(Dvbbs.CacheData(33,0),"/","\/")%>/gi,''); frm.label_template_loop.value=s //frm.label_template_stop.value=label_edit_template_stop.save(); frm.label_query_config.value=Label_Get_QueryConfig(); break; } } if (rtn){ frm.subtn.disabled=true; $("form_chk").innerHTML="<font color=green>检查通过,正在提交,请稍等..</font>"; }else{ frm.subtn.disabled=false; $("form_chk").innerHTML="<font color=red>检查未通过,请修改后重新提交。</font>"; try{e.returnValue=false;}catch(er){e.preventDefault();} } } function Label_SelectMutiOption(selid,str){ var s=','+str+','; for (var i=selid.length-1;i>=0;--i){ if (-1!=s.indexOf(','+selid[i].value+',')){ selid[i].selected=true; } } } function Label_GetSelectedValue(selid){ var s=''; for (var i=selid.length-1;i>=0;--i){ if (''!=selid[i].value&&selid[i].selected){ s+=','+selid[i].value; } } if (''!=s){s=s.substr(1,s.length-1);} return s; } function Label_Get_QueryConfig(){ var a=[]; a.push($('label_total').value); a.push(Label_GetSelectedValue($('label_order_by').options)); a.push($('label_order_0').checked?0:1); switch(Label_GetSelectedValue($("label_query_type").options)){ case 'bbs': a.push(Label_GetSelectedValue($('label_board').options)); a.push($('label_board_0').checked?0:1); a.push($('label_bbstype_0').checked?0:($('label_bbstype_1').checked?1:($('label_bbstype_2').checked?2:3))); a.push(Label_GetSelectedValue($('label_time_limit').options)); $('label_mainshow_length').value=$('label_title_length').value; break; case 'user': break; case 'news': a.push(Label_GetSelectedValue($('label_board').options)); a.push($('label_board_0').checked?0:1); break; case 'file': a.push(Label_GetSelectedValue($('label_board').options)); a.push($('label_board_0').checked?0:1); a.push(Label_GetSelectedValue($('label_file_type').options)); $('label_mainshow_length').value=$('label_readme_length').value; break; case 'group': break; }; return a.join('$'); } function Label_Query_ChangeType(fromtype,totype,cfgstr,timetype){ $('tr_board').style.display='none'; $('tr_bbs').style.display='none'; $('tr_file').style.display='none'; $('label_order_by').length=null; $('label_order_by').options[0]=new Option('选择排序方式','0'); var t=totype||'bbs',i=0; var c=cfgstr; var m=isNaN(timetype)?0:parseInt(timetype); var arr=c?c.split('$'):[]; switch(t){ case 'bbs': if(7!=arr.length||fromtype!=totype){c='10$1$1$$0$0$0';arr=c.split('$');}//0-调用记录条数$1-排序方式$2-正倒序$3-版面列表$4-版面模式$5-贴子类型$6-时间限制 Label_SelectMutiOption($('label_board').options,arr[3]||''); $('label_board_0').checked=false; $('label_board_1').checked=false; $('label_board_'+arr[4]).checked=true; $('label_order_by').options[++i]=new Option('贴子ID(推荐)',i); $('label_order_by').options[++i]=new Option('最新回复时间',i); $('label_order_by').options[++i]=new Option('点击量',i); $('label_order_by').options[++i]=new Option('回复数',i); $('label_bbstype_0').checked=false; $('label_bbstype_1').checked=false; $('label_bbstype_2').checked=false; $('label_bbstype_'+arr[5]).checked=true; $('tr_board').style.display=''; $('tr_bbs').style.display=''; $('label_query_type').selectedIndex=1; $('label_time_limit').selectedIndex=arr[6]||0; break; case 'user': if(3!=arr.length||fromtype!=totype){c='10$1$1';arr=c.split('$');}//0-调用记录条数$1-排序方式$2-正倒序 $('label_order_by').options[++i]=new Option('用户ID(推荐)',i); $('label_order_by').options[++i]=new Option('贴子数',i); $('label_order_by').options[++i]=new Option('主题数',i); $('label_order_by').options[++i]=new Option('精华数',i); $('label_order_by').options[++i]=new Option('金钱值',i); $('label_order_by').options[++i]=new Option('积分值',i); $('label_order_by').options[++i]=new Option('魅力值',i); $('label_order_by').options[++i]=new Option('被删贴数',i); $('label_order_by').options[++i]=new Option('登陆次数',i); $('label_query_type').selectedIndex=2; break; case 'news': if(5!=arr.length||fromtype!=totype){c='10$1$1$$0';arr=c.split('$');}//0-调用记录条数$1-排序方式$2-正倒序$3-版面列表$4-版面模式 Label_SelectMutiOption($('label_board').options,arr[3]||'0'); $('label_board_0').checked=false; $('label_board_1').checked=false; $('label_board_'+arr[4]).checked=true; $('label_order_by').options[++i]=new Option('公告ID',i); $('tr_board').style.display=''; $('label_query_type').selectedIndex=3; break; case 'file': if(6!=arr.length||fromtype!=totype){c='10$1$1$$0$1';arr=c.split('$');}//0-调用记录条数$1-排序方式$2-正倒序$3-版面列表$4-版面模式$5-文件类型$6-后缀名 Label_SelectMutiOption($('label_board').options,arr[3]||'0'); $('label_board_0').checked=false; $('label_board_1').checked=false; $('label_board_'+arr[4]).checked=true; $('label_order_by').options[++i]=new Option('附件ID(推荐)',i); $('label_order_by').options[++i]=new Option('浏览次数',i); $('label_order_by').options[++i]=new Option('下载次数',i); $('label_order_by').options[++i]=new Option('文件大小',i); $('label_file_type').selectedIndex='all'==arr[5]?0:parseInt(arr[5])+1; $('tr_board').style.display=''; $('tr_file').style.display=''; $('label_query_type').selectedIndex=4; break; } $('label_total').value=arr[0]; $('label_time_type').selectedIndex=m||0; $('label_order_by').selectedIndex=arr[1]||1; $('label_order_0').checked=false; $('label_order_1').checked=false; $('label_order_'+arr[2]).checked=true; } //--> </SCRIPT> <form name="form1" method="post" action="?do=save_label" onsubmit="Label_Submit(this,event)"> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr> <td width="170" class="td_title" style="border:0px;">自定义标签列表</td><td width="*" class="td_title" style="border:0px;"></td> </tr> <tr> <td align="left" colspan="2" valign="middle" style="height:140px;padding:10px;margin:10px;"><%ListLabelFolder G_CurrentFolder%></td> </tr> <tr> <td align="left" colspan="2" class="td_title">添加自定义标签[ <a href="?do=add&label_type=static&folder=<%=G_CurrentFolder%>" title="点这里添加一个静态标签">静态标签</a> - <a href="?do=add&label_type=rss&folder=<%=G_CurrentFolder%>" title="点这里添加一个RSS订阅标签">RSS订阅标签</a> - <a href="?do=add&label_type=query&folder=<%=G_CurrentFolder%>" title="点这里添加一个论坛内容调用标签">论坛内容调用标签</a> ]</td> </tr> <tr> <td align="right">三种标签的说明:</td> <td>① 静态标签:编辑之后,标签内容不会变化。适合于一些不常改动但多处使用的页面内容。 <br /> ② RSS订阅标签:订阅指定内容,定时更新内容。这些内容不限于本论坛。 <br /> ③ 论坛内容调用标签:可以调用论坛数据库中的内容,包括贴子、用户、版面等。<br /> </td> </tr> <% Label_Form Function GetDefaultSet(LabelType) Dim str Select Case LabelType Case "static" str="static|||72000|||这里是输出内容.." Case "rss" str="rss|||3600|||http://|||<?xml version=""1.0"" encoding=""gb2312""?>"&VBNewline&_ "<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">"&VBNewline&_ " <xsl:output method=""xml"" omit-xml-declaration = ""yes"" indent=""yes"" version=""4.0""/>"&VBNewline&_ " <xsl:template match=""/rss"">"&VBNewline&_ " <xsl:apply-templates select=""channel/item"" />"&VBNewline&_ " </xsl:template>"&VBNewline&_ " <xsl:template match=""item"">"&VBNewline&_ " <li><a href=""{link}"" target=""_blank"">"&VBNewline&_ " <a href=""{link}"" target=""_blank""><xsl:value-of select=""title"" /></a> <xsl:value-of select=""pubDate"" />"&VBNewline&_ " </a></li>"&VBNewline&_ " </xsl:template>"&VBNewline&_ "</xsl:stylesheet>" Case "query" str="query|||100|||bbs||||||<ul>|||<li> </li>|||</ul>||||||20|||2" End Select GetDefaultSet=str End Function Sub Label_Form() Dim sLabelName,iLabelIntv,sRealDo,sLabelType,sLabelPath sRealDo=request("realdo") sLabelPath=G_CurrentFolder sLabelName="untitle_"&(G_i+1) If ""<>request("label_name") Then sLabelName=request("label_name") Select Case G_Do Case "edit_label" G_Msg="" sLabelName=Replace(request("file"),".tpl","") If IsSafeParam(sLabelPath,"^[a-zA-Z0-9_\/]+$") And IsSafeParam(sLabelName,"^[a-zA-Z0-9_]+$") Then If FileIsExist(Dvbbs.ScriptPath&sLabelPath&sLabelName&".tpl") Then On Error Resume Next G_Config=Dvbbs.ReadTextFile(sLabelPath&sLabelName&".tpl") If Err Then Err.Clear G_Msg="<font color=red>读取标签失败,可能是没有读取文件的权限。</font>" sRealDo="add" Else If InStr(G_Config,"|||")>0 Then G_Config=Split(G_Config,"|||") Select Case G_Config(0) Case "static" If 2=UBound(G_Config) Then G_Msg="您正准备编辑一个静态标签。" Else G_Config=Split(GetDefaultSet("static"),"|||") G_Msg="<font color=red>标签格式不规范。您可以尝试填写下面的表格来替换它。</font>" End If Case "rss" If 3=UBound(G_Config) Then G_Msg="您正准备编辑一个Rss订阅标签。" Else G_Config=Split(GetDefaultSet("rss"),"|||") G_Msg="<font color=red>标签格式不规范。您可以尝试填写下面的表格来替换它。</font>" End If Case "query" If 9=UBound(G_Config) Then G_Msg="您正准备编辑一个论坛内容调用标签。" Else G_Config=Split(GetDefaultSet("query"),"|||") G_Msg="<font color=red>标签格式不规范。您可以尝试填写下面的表格来替换它。</font>" End If Case Else G_Config=Split(GetDefaultSet("static"),"|||") G_Msg="<font color=red>标签格式不规范。您可以尝试填写下面的表格来替换它。</font>" End Select Else G_Config=Split(GetDefaultSet("static"),"|||") G_Msg="<font color=red>标签格式不规范。您可以尝试填写下面的表格来替换它。</font>" End If sRealDo="update" G_Msg=G_Msg&" <a href='?do=del_label&label_name="&sLabelName&"&folder="&sLabelPath&"' onclick='return confirm(""您确定要删除"&sLabelName&"标签吗?删除之后不能恢复。"")'>您也可以点这里删除它。</a>" End If Else G_Msg="<font color=red>找不到该标签,您可以尝试填写下面的表格来添加它。</font>" sRealDo="add" End If Else G_Config=Split(GetDefaultSet("static"),"|||") G_Msg="<font color=red>传递过来的参数不规范。无法读取标签文件。您可以填写下面的表格添加标签。</font>" sLabelName="untitle_"&(G_i+1) sRealDo="add" End If Case "save_label" Case "del_label" G_Config=Split(GetDefaultSet("static"),"|||") G_Msg=G_Msg&" 您现在可以添加一个静态标签。" Case Else Select Case request("label_type") Case "static" G_Config=Split(GetDefaultSet("static"),"|||") G_Msg="您现在可以添加一个静态标签。" Case "rss" G_Config=Split(GetDefaultSet("rss" ),"|||") G_Msg="您现在可以添加一个RSS订阅标签。" Case "query" G_Config=Split(GetDefaultSet("query" ),"|||") G_Msg="您现在可以添加一个论坛内容调用标签。" Case Else G_Config=Split(GetDefaultSet("static"),"|||") G_Msg="您现在可以添加一个静态标签。" End Select End Select %> <tr> <td align="center" colspan="2" style="color:blue">操作提示:<%=G_Msg%></td> </tr> <tr> <td align="right">保存目录:</td> <td> ../Resource/Label<%=G_CurrentFolder%> </td> </tr> <tr> <td align="right">标签名称:</td> <td><input type="text" name="label_name" size="20" maxlength="255" value="<%=sLabelName%>" onblur="Label_Chk(this,/^[a-zA-Z0-9_\/]+$/gi)" />.tpl<span id="label_name_chk"></span> *只能由字母和下划线及数字组成。</td> </tr> <tr> <td align="right">缓存时间:</td> <td><input type="text" id="label_intv" name="label_intv" size="10" value="<%=G_Config(1)%>" onkeyup="this.value=this.value.replace(/[^0-9]/gi,'');$('format_time').innerHTML=Label_FormatTime(this.value);" onblur="Label_Chk(this,/^[0-9]+$/gi)"><span id="label_intv_chk"></span> *单位:秒。只能填数字。<span id="format_time"></span></td> </tr> <% Select Case G_Config(0) Case "static" %> <tr> <td align="right" valign="top">输出内容:</td> <td style="padding:0px;margin:0px;border:0px;"> <span><textarea id="label_content" name="label_content" style="display:none;width:100%;height:300px;overflow:auto;padding:0px;margin:0px;border:none;"><%=G_Config(2)%></textarea></span> <div> <SCRIPT LANGUAGE="JavaScript"> <!-- var dveditconfig={ textarea_id:'label_content', edit_height:'275px', edit_mode:'design', toolbar:['bold','italic','underline','separator','fontsize','fontfamily','fontcolor','fontbgcolor','separator','link','image','media','separator','justifyleft','justifycenter','justifyright','separator','insertorderedlist','insertunorderedlist','outdent','indent'], to_xhml:false }; var label_content_edit=new DvEdit(dveditconfig); //--> </SCRIPT> </div> </td> </tr> <% Case "rss" %> <tr> <td align="right">订阅网址:</td> <td><input type="text" name="label_rss" size="70" maxlength="255" value="<%=G_Config(2)%>" onblur="Label_Chk(this,/^http:\/\//gi)" /><span id="label_rss_chk"></span> <br/>*以"http://"开头的完整网址。如百度的国内焦点新闻:http://news.baidu.com/n?cmd=1&class=civilnews&tn=rss&sub=0</td> </tr> <tr> <td align="right" valign="top">解释模板:<br/>(stylesheet)</td> <td><textarea name="label_xslt" style="width:100%;height:300px;border:0px;margin:0px;padding:0px;font-family:Courier New;color:#cc0000"><%=G_Config(3)%></textarea></td> </tr> <% Case "query" response.write "<script language='javascript'>var FromQueryType='"&G_Config(2)&"',ToQueryType='"&G_Config(2)&"',Config='"&G_Config(7)&"',TimeType='"&G_Config(9)&"';</script>" %> <tr> <td align="right">内容类型:</td> <td><select id="label_query_type" name="label_query_type" onchange="Label_Query_ChangeType(FromQueryType,this.value,Config,TimeType)"> <option value="">选取调用类型</option> <option value="bbs">帖子调用</option> <option value="user">会员调用</option> <option value="news">公告调用</option> <option value="file">展区调用</option> </select></td> </tr> <tr> <td align="right">调用记录条数:</td> <td><input type="text" id="label_total" name="label_total" size="10" maxlength="6" value="" onkeyup="this.value=this.value.replace(/[^0-9]/gi,'');" onblur="Label_Chk(this,/^[0-9]+$/gi)" /><span id="label_total_chk"></span> *只能填数字。</td> </tr> <tr id="tr_board" style="display:none;"> <td align="right" valign="top">版面查询设置:</td> <td> <select id="label_board" name="label_board" multiple="multiple" size="8"></select> <script language="javascript"> <!-- BoardJumpListSelect('0',"label_board","选取所有版面","",0); //--> </script> <label for="label_board_0"><input id="label_board_0" type="radio" name="select_board_mode" value="0" class="radio" checked />调用选中版面</label> <label for="label_board_1"><input id="label_board_1" type="radio" name="select_board_mode" value="1" class="radio" />排除选中版面</label> *按住CTRL、SHIFT键或者在选择框内拖动鼠标可以选中多个版面。 </td> </tr> <tr> <td align="right" valign="top">时间显示格式:</td> <td> <select id="label_time_type" name="label_time_type"> <option value="0" SELECTED>YYYY-M-D H:M:S(长格式)</option> <option value="1">YYYY年M月D</option> <option value="2">YYYY-M-D</option> <option value="3">H:M:S</option> <option value="4">hh:mm</option> </select> </td> </tr> <tr> <td align="right" valign="top">排序方式设置:</td> <td> <select id="label_order_by" name="label_order_by"> <option value="0">选择排序方式</option> </select> <label for="label_order_0"><input id="label_order_0" type="radio" name="select_order_mode" value="0" class="radio" checked />正序(小->大)</label> <label for="label_order_1"><input id="label_order_1" type="radio" name="select_order_mode" value="1" class="radio" />倒序(大->小)</label> </td> </tr> <tr id="tr_bbs" style="display:none;"> <td align="right" valign="top">其它调用限制:</td> <td> 标题长度<input type="text" id="label_title_length" name="label_title_length" size="10" maxlength="6" value="<%=G_Config(8)%>" onblur="Label_Chk(this,/^[0-9]+$/gi)" onkeyup="this.value=this.value.replace(/[^0-9]/gi,'');" /><span id="label_title_length_chk"></span> *只能填数字。 贴子类型:<label for="label_bbstype_0"><input id="label_bbstype_0" type="radio" name="label_bbstype" value="0" class="radio" checked />不限</label> <label for="label_bbstype_1"><input id="label_bbstype_1" type="radio" name="label_bbstype" value="1" class="radio" />仅固顶主题</label> <label for="label_bbstype_2"><input id="label_bbstype_2" type="radio" name="label_bbstype" value="2" class="radio" />仅精华主题</label> <label for="label_bbstype_3"><input id="label_bbstype_3" type="radio" name="label_bbstype" value="3" class="radio" />仅回复贴子(如果选中此项,将只能按贴子ID排序)</label> <br/>时间范围: <select id="label_time_limit" name="label_time_limit"> <option value="0" SELECTED>不限时间</option> <option value="1">1周内</option> <option value="2">1个月内</option> <option value="3">3个月内</option> <option value="4">半年内</option> <option value="5">1年内</option> </select> </td> </tr> <tr id="tr_file" style="display:none;"> <td align="right" valign="top">其它调用限制:</td> <td> 文件说明长度<input type="text" id="label_readme_length" name="label_readme_length" size="10" maxlength="6" value="<%=G_Config(8)%>" onblur="Label_Chk(this,/^[0-9]+$/gi)" onkeyup="this.value=this.value.replace(/[^0-9]/gi,'');" /><span id="label_readme_length_chk"></span> *只能填数字。 调用文件类型: <select name="label_file_type" id="label_file_type"> <option value="all" selected>不限类型</option> <option value="0">文件集</option> <option value="1">图片集</option> <option value="2">flash集</option> <option value="3">音乐集</option> <option value="4">电影集</option> </select> </label> </td> </tr> <tr> <td align="right" valign="top">解释模板(开始):<br/>开始解释时输出</td> <td style="padding:0px;margin:0px;border:0px;"> <textarea id="label_template_start" name="label_template_start" style="width:100%;height:100px;overflow:auto;padding:0px;margin:0px;border:none"><%=G_Config(4)%></textarea> <div> <SCRIPT LANGUAGE="JavaScript"> <!-- //var label_edit_template_start=new DvEdit('label_template_start','75px','text',['bold','italic','underline','separator','fontsize','fontfamily','fontcolor','fontbgcolor','separator','link','image','media','separator','justifyleft','justifycenter','justifyright','separator','insertorderedlist','insertunorderedlist','outdent','indent']); //--> </SCRIPT> </div> </td> </tr> <tr> <td align="right" valign="top">解释模板(循环):<br/>循环解释内容输出 <div id="tool_label_user" style="display:none;"> <ul> <li>用户ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserID}</a></li> <li>用户名:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserName}</a></li> <li>用户主题数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserTopic}</a></li> <li>用户帖子数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserPost}</a></li> <li>用户精华数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserBest}</a></li> <li>用户金钱:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserWealth}</a></li> <li>用户魅力:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserCP}</a></li> <li>用户积分:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserEP}</a></li> <li>用户被删帖数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserDel}</a></li> <li>用户性别:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserSex}</a></li> <li>用户注册时间:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$JoinDate}</a></li> <li>用户登陆次数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserLogins}</a></li> </ul> </div> <div id="tool_label_news" style="display:none;"> <ul> <li>公告ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ID}</a></li> <li>标题:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Topic}</a></li> <li>作者:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserName}</a></li> <li>版块名称:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$BoardName}</a></li> <li>版块ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Boardid}</a></li> <li>时间:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$PostTime}</a></li> </ul> </div> <div id="tool_label_file" style="display:none;"> <ul> <li>作者:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserName}</a></li> <li>版块名称:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$BoardName}</a></li> <li>版块ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Boardid}</a></li> <li>时间:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$AddTime}</a></li> <li>文件ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ID}</a></li> <li>文件名:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Filename}</a></li> <li>文件说明:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Readme}</a></li> <li>文件类型:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$FileType}</a></li> <li>文件预览文件名:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ViewFilename}</a></li> <li>浏览数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ViewNum}</a></li> <li>下载数:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$DownNum}</a></li> <li>文件大小:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$FileSize}</a></li> <li>帖子主题ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$RootID}</a></li> <li>帖子对应ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ReplyID}</a></li> <li>交替颜色:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$TColor}</a></li> </ul> </div> <div id="tool_label_bbs" style="display:none;"> <ul> <li>标题:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Topic}</a></li> <li>作者:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$UserName}</a></li> <li>发表时间:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$PostTime}</a></li> <li>回复者:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ReplyName}</a></li> <li>回复时间:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ReplyTime}</a></li> <li>版块名称:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$BoardName}</a></li> <li>版块说明:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$BoardInfo}</a></li> <li>心情图标:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Face}</a></li> <li>帖子ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ID}</a></li> <li>帖子ReplyID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$ReplyID}</a></li> <li>版面ID:<a href="javascript:;" onclick="label_edit_template_loop.insert(this.innerHTML);">{$Boardid}</a></li> </ul> </div> <div id="tool_label_group" style="display:none;"> </div> </td> <td style="padding:0px;margin:0px;border:0px;"> <textarea id="label_template_loop" name="label_template_loop" style="display:none;width:100%;height:300px;overflow:auto;padding:0px;margin:0px;border:none"><%=G_Config(5)%></textarea> <div> <SCRIPT LANGUAGE="JavaScript"> <!-- function strForSelectLabel(){ var s=$('label_query_type').value||'bbs'; return $('tool_label_'+s).innerHTML; } var dveditconfig={ textarea_id:'label_template_loop', edit_height:'275px', edit_mode:'design', toolbar:['bold','italic','underline','separator','fontsize','fontfamily','fontcolor','fontbgcolor','separator','link','image','media','separator','justifyleft','justifycenter','justifyright','separator','insertorderedlist','insertunorderedlist','outdent','indent','<div style="float:left;position:relative;padding-top:4px;color:red" onclick="label_edit_template_loop.t.open(this,strForSelectLabel())">[插入调用标签]</div>'], to_xhml:false }; var label_edit_template_loop=new DvEdit(dveditconfig); //--> </SCRIPT> </div> </td> </tr> <tr> <td align="right" valign="top">解释模板(结束):<br/>结束解释时输出</td> <td style="padding:0px;margin:0px;border:0px;"> <textarea id="label_template_stop" name="label_template_stop" style="width:100%;height:100px;overflow:auto;padding:0px;margin:0px;border:none"><%=G_Config(6)%></textarea> <div> <SCRIPT LANGUAGE="JavaScript"> <!-- //var label_edit_template_stop=new DvEdit('label_template_stop','75px','text',['bold','italic','underline','separator','fontsize','fontfamily','fontcolor','fontbgcolor','separator','link','image','media','separator','justifyleft','justifycenter','justifyright','separator','insertorderedlist','insertunorderedlist','outdent','indent']); //--> </SCRIPT> </div> </td> </tr> <input type="hidden" id="label_mainshow_length" name="label_mainshow_length" value="<%=G_Config(8)%>" /> <input type="hidden" id="label_query_config" name="label_query_config" value="<%=G_Config(7)%>" /> <script language="javascript">Label_Query_ChangeType(FromQueryType,ToQueryType,Config,TimeType);</script> <% End Select %> <tr> <td align="right"> </td> <td> <input type="hidden" name="label_oldname" value="<%=sLabelName%>" /> <input type="hidden" name="realdo" value="<%=sRealDo%>" /> <input type="hidden" name="label_type" value="<%=G_Config(0)%>" /> <input type="hidden" name="label_path" value="<%=sLabelPath%>" /> <input type="hidden" name="folder" value="<%=sLabelPath%>" /> <input type="submit" name="subtn" value=" 提交保存 " class="button" /> <span id="form_chk"></span> </td> </tr> <% End Sub %> </table> </form> </body> </html>